<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // let num = 0
    // function funA(a, b) {
    //   return a + b
    // }
    // function funcB(c) {
    //   const res = funA(1, 2)
    //   return res + c
    // }
    // num = funcB(3)

    // 执行函数时,创建对应执行上下文,内部保存变量,代码等一系列执行函数需要的东西
    // 进入JS调用堆栈,执行==>执行完毕之后=>出栈
    // 所有代码执行完毕为止
    // 栈的特点,先进后出

    // 栈溢出, JS调用栈有容量大小,太大了,会溢出
    // JS调用堆栈装满了之后,就会出现 
    // Maximum call stack size exceeded
    // 常见: 
    //  1. 死递归
    //  2. 导航守卫
    function sum() {
      let i = 0;
      i++
      sum()
    }

    sum()

  </script>
</body>

</html>